package com.lx.boot.config;

import com.lx.annotation.Note;
import com.lx.util.LX;

@Note("利用枚举类型实现多租户时配置不同的问题")
public interface FirmProperties {

    @Note("配置地址")
    String getKey();

    @Note("配置默认值")
    String getDefaultValue();

    @Note("获取字符串配置")
    default String get(){
        return LX.ifNull(FirmPropertiesUtil.getProperty(getKey()),getDefaultValue());
    }

    @Note("获取字符串配置")
    default String get(String defaultValue){
        return LX.ifNull(FirmPropertiesUtil.getProperty(getKey()),defaultValue);
    }

    @Note("获取字符串配置")
    default boolean getBoolean(){
        return "true".equals(LX.ifNull(FirmPropertiesUtil.getProperty(getKey()),getDefaultValue()));
    }

    @Note("获取字符串配置")
    default boolean getBoolean(boolean defaultValue){
        return get(Boolean.class,defaultValue);
    }

    @Note("获取基本类型的配置")
    default <T>T get(Class<T> tClass, T defaultValue){
        return LX.ifNull(FirmPropertiesUtil.getProperty(getKey(),tClass),defaultValue);
    }

}
